1. Field of the Invention
This invention relates to object oriented software programming and more particularly relates to automatically generating a reusable software component for interfacing with a web service.
2. Description of the Related Art
A web service, as commonly referred to in the art of software programming, is an application or module of code that is accessible over the internet using Hyper Text Transfer Protocol (“HTTP”), Extensible Markup Language (“XML”), or other data transfer protocols and data formats. Web services are often provided by companies or business entities to facilitate business transactions over the internet. For example Amazon™ provides the Amazon Web Service (“AWS”) to allow software developers to incorporate access to the Amazon™ database in their web applications. Additionally, the AWS provides services to facilitate purchasing of Amazon™ products over the internet from separate and distinct web applications.
Web services may be written in various software languages and use a Web Service Description Language (“WSDL”) which has been standardized for commonality and interoperability to describe the web service. WSDL is an XML syntax format for describing network services as a group of communication endpoints exchanging messages containing data and commands. Using WSDL, a web service can be utilized as a “black box” with one or more input ports and one or more output ports. For example, an application accessing the web service provides a message containing a command and/or data, and receives a message containing the data or commands resulting from the web service request. The web service application code used to perform background operations may include JAVA, C, C++, or the like. However, since web applications use XML, or WSDL, to request access to the web service, the language format of the background code is irrelevant.
The ports of a web service typically include some specific formatting requirements. A port of a web service requires data or commands of a specific data type. For example, a web service for providing a current temperature by city would include an input port and an output port. The input port may require a character string representing the city name, and the output port returns an integer representing the temperature in that city.
Web services employ standardized XML format to allow software application developers to access the web services from a variety of applications. Typically, web applications access web services, because access to the web service generally requires a data transfer protocol such as HTTP. One common language for web application code is JAVA. A JAVA developer, for example, must write JAVA application code to translate for accessing the web service.
The translation code typically assigns input arguments from the JAVA code to XML formatted arguments for the web service ports. Additionally, the translation code converts the resulting messages from XML format back to JAVA format. Another function of the translation code is invoking and operation of the web service. Web services typically require instructions for invoking the service or one of the subsets of services provided. For example, a library application may include a translation code to access Amazon™ to allow a user to order a book that is not available in the library.
Adding web service access to an application requires the application developer to take several preparatory steps. The software developer must find the Uniform Resource Locator (“URL”) associated with the web service, establish access to the web service, determine the input and output arguments of the web service and the associated data formats, optionally test the web service, determine the required arguments and data types of the requesting application, and write the code required to implement web service access. Each of these steps may be time consuming, error prone, mundane, distracting, and may require additional skills.
Finding a web service URL is often time consuming. A developer can perform a web search using a search engine to find the desired web service provider. Alternatively, if the web service provider is known, the developer may find a link to the web service on the provider's web page. Another solution includes performing a search of a Universal Description, Discovery, and Integration (“UDDI”) registry of web services. However UDDI search services such as OASIS™ may require user registration which requires an additional investment of time and possibly increased cost.
Testing of integrated web services generally requires a complete launch of the application accessing the web service, or the creation of a separate and distinct testing harness code. Such a test harness code is typically written independent of the application, and takes a significant time investment to develop.
Furthermore, each of the activities described above with relation to integration of web service access code in an application may require technical skills beyond those required for one of ordinary skill in the art of software design to develop a software application. As described above, accessing web services requires knowledge of XML, the UDDI system, and web service operation and formatting. Additionally, these activities divert energy and attention away from the task of application development and consume substantial portions of development time.
From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method that automatically generate a reusable software component for interfacing with a web service. Beneficially, such an apparatus, system, and method would facilitate creation, testing, and integration of web service components in application code without requiring a substantial time and resource investment.